﻿'''
题目内容
AI识别到面板上有 N(1≤N≤100) 个指示灯，灯大小一样，任意两个之间无重叠。
由于AI识别误差，每次识别到的指示灯位置可能有差异，以4个坐标值描述AI识别的指示灯的大小和位置(左上角x1,y1，右下角x2,y2)
请输出先行后列排序的指示灯的编号，排序规则:
1.每次在尚未排序的灯中挑选最高的灯作为基准灯，
2.找出和基准灯属于同一行的所有的灯进行排序。两灯高低偏差不超过灯半径算同一行(即两个灯坐标的差不超过灯高度的一半)。
输入描述
第一行为N，表示灯的个数接下来N行，每行为1个灯的坐标信息，格式为:
编号x_1 y_1 x_2 y_2
· 编号全局唯一
· 编号1≤编号≤100
· 0≤x1<x2≤1000
· 0≤y1≤y2≤1000
输出描述
排序后的编号列表，编号之间以空格分隔
用例
输入
5
1 0 0 2 2
2 6 1 8 3
3 3 2 5 4
5 5 4 7 6
4 0 4 2 6
输出
1 2 3 4 5
'''
#读取输入
n = int(input())
light_list = []
for _ in range(n):
    light_list.append(list(map(int,input().split())))

result = []     #存储结果
while len(light_list) != 0:
    light_list.sort(key= lambda x: (x[2],x[1]))     #对所有灯按高度（y）排序，高度相同按行（x）排序
    result.append(light_list[0][0])     #将排序后高度最高的灯的编号加入结果
    y1 = light_list[0][2]           #基准灯的y1坐标，用来比较同行灯的距离
    height = abs(light_list[0][2] - light_list[0][4])//2    #基准灯半径
    light_list.pop(0)
    #遍历剩余灯，查找同行灯
    cur_light_list = []
    for light in light_list:
        cur_y1 = light[2]
        if abs(y1 - cur_y1) <= height:
            result.append(light[0])         #符合条件，加入编号
            cur_light_list.append(light)    #把灯加入要移除列表   
    if len(cur_light_list) != 0:    #移除灯不空
        for remove_light in cur_light_list:
            light_list.remove(remove_light)
#输出结果
print(' '.join(str(res) for res in result))